<?php
// +----------------------------------------------------------------------
// | sfadmin - Suifeng Administration
// +----------------------------------------------------------------------
// | Copyright (c) 2017-2020 http://suifeng.tech All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: suifeng <1787585212@qq.com>
// +----------------------------------------------------------------------

namespace app\admin\controller;

use app\admin\common\AdminController;
use app\admin\common\AdminException;

class User extends AdminController
{
    public function index()
    {
        $data = $this->_get_pagination_data();

        $data['total_rows'] = model('admin/user')->query_count($data['where_list']);
        $data['page_count'] = intval(ceil($data['total_rows'] / $data['page_size']));
        $data['page_num'] = $data['page_num'] > $data['page_count'] ? 1 : $data['page_num'];

        $data['user_list'] = model('admin/user')->query_list($data['where_list'], $data['page_num'], $data['page_size'], $data['sort_field'], $data['sort_order']);

        $this->display('user/user_list', $data);
    }

    public function create()
    {
        $user_info = model('admin/user')->initDefault();

        if (request()->isPost()) {
            $user_info->acceptData($this->post_array());

            try {
                $user_info->save();
            } catch (AdminException $ae) {
                $this->error($ae->getString());
            }

            $this->success('新增成功。', $this->url('index'));
        }

        $this->assign('user_info', $user_info);
        $this->display('user/user_form');
    }

    public function modify($id)
    {
        $user_info = model('admin/user')->findOrFail($id);

        if (request()->isPost()) {
            $user_info->acceptData($this->post_array());

            try {
                $user_info->save();
            } catch (AdminException $ae) {
                $this->error($ae->getString());
            }

            $this->success('修改成功。', $this->url('index'));
        }

        $this->assign('user_info', $user_info);
        $this->display('user/user_form');
    }

    protected function post_array()
    {
        $array = parent::post_array();
        if (empty($array['password'])) {
            unset($array['password']);
        } else {
            $array['password'] = model('admin/user')->md5_crypt($array['password']);
        }
        return $array;
    }

    public function bulk_delete($ids = array())
    {
        $user_list = model('admin/user')->where('id', 'in', $ids)->select();
        foreach ($user_list as $user_info) {
            try {
                $user_list->save();
            } catch (AdminException $ae) {
                $this->error($ae->getString());
            }
        }
        $this->success('删除成功。', $this->url('index'));
    }





//     /**
//      * 模型名称。
//      */
//     protected $model_name   = 'admin/user';

//     /**
//      * 模型标题。
//      */
//     protected $model_title  = '用户';

//     /**
//      * 模型字段。
//      */
//     protected $model_fields = [
//         'id'            =>  [
//             'dbtype'        =>  'integer',
//             'title'         =>  'UID',
//             'identity'      =>  true,
//         ],
//         'nickname'      =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '昵称',
//             'required'      =>  true,
//             'length'        =>  50,
//             'listable'      =>  true,
//             'editable'      =>  true,
//             'searchable'    =>  true,
//         ],
//         'username'      =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '用户',
//             'required'      =>  true,
//             'length'        =>  50,
//             'unique'        =>  true,
//             'listable'      =>  true,
//             'editable'      =>  true,
//             'searchable'    =>  true,
//         ],
//         'password'      =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '密码',
//             'length'        =>  50,
//             'editable'      =>  true,
//         ],
//         'email'         =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '邮箱',
//             'length'        =>  50,
//             'listable'      =>  true,
//             'editable'      =>  true,
//             'searchable'    =>  true,
//         ],
//         'email_bind'    =>  [
//             'dbtype'        =>  'boolean',
//             'title'         =>  '邮箱绑定',
//             'control'       =>  'toggle',
//             'editable'      =>  true,
//         ],
//         'mobile'        =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '手机',
//             'length'        =>  11,
//             'listable'      =>  true,
//             'editable'      =>  true,
//             'searchable'    =>  true,
//         ],
//         'mobile_bind'   =>  [
//             'dbtype'        =>  'boolean',
//             'title'         =>  '手机绑定',
//             'control'       =>  'toggle',
//             'editable'      =>  true,
//         ],
//         'avatar'        =>  [
//             'dbtype'        =>  'string',
//             'title'         =>  '头像',
//             'display'       =>  'image',
//             'listable'      =>  true,
//             'editable'      =>  true,
//         ],
//         'status'        =>  [
//             'dbtype'        =>  'integer',
//             'title'         =>  '状态',
//             'default'       =>  1,
//             'control'       =>  'toggle',
//             'column'        =>  'status',
//             'listable'      =>  true,
//             'editable'      =>  true,
//         ],
//         'create_time'   =>  [
//             'dbtype'        =>  'datetime',
//             'title'         =>  '创建时间',
//         ],
//         'update_time'   =>  [
//             'dbtype'        =>  'datetime',
//             'title'         =>  '更新时间',
//         ],
//     ];

//     protected function _handle_form_original()
//     {
//         // 密码字段都显示为空。
//         $this->model_form->original_data['password'] = '';
//     }

//     protected function _handle_form_before_save()
//     {
//         // 如果提交数据中password字段有值，则需要加密后再保存到数据库。
//         // 如果提交数据中password字段没有值，则不需要保存到数据库，从$data中删除，这样就不会做update。
//         if ($this->model_form->submitted_data['password']) {
//             $this->model_form->submitted_data['password'] = user_md5($this->model_form->submitted_data['password']);
//         } else {
//             unset($this->model_form->submitted_data['password']);
//         }
//     }
}
